<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script>
    // new Promise((resolve, reject) => {
    //     setTimeout(() => {
    //       resolve("aaa");
    //     }, 1000)
    // }).then(res => {
    //   console.log(res, "第一层的十行处理代码");

    //   // 对结果第一次处理
    //   return new Promise((resolve, reject) => {
    //     // resolve(res + '111');
    //     reject("error come");
    //     // 下列then不再执行
    //   });
    // }).then((res) => {
    //   console.log(res, "第二层的十行处理代码");
    //   return new Promise((resolve, reject) => {
    //       resolve(res + '222');
    //   });
    // }).then((res) => {
    //   console.log(res, "第三层的十行处理代码");
    // }).catch(err => {
    //   console.log(err);
    // });

    // 基本省略写法 
    // new Promise((resolve, reject) => {
    //     setTimeout(() => {
    //       resolve("aaa");
    //     }, 1000)
    // }).then(res => {
    //   console.log(res, "第一层的十行处理代码");

    //   // 对结果第一次处理
    //   return Promise.resolve(res + '111');
    // }).then((res) => {
    //   console.log(res, "第二层的十行处理代码");

    //   return Promise.resolve(res + '222');
    // }).then((res) => {
    //   console.log(res, "第三层的十行处理代码");
    // });



    // 完全省略写法 
    new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve("aaa");
        }, 1000)
    }).then(res => {
      console.log(res, "第一层的十行处理代码");

      // 对结果第一次处理
      // return res + '111';

      // return Promise.reject('error message');
      // 可以用throw代替

      throw "error message throw";
    }).then((res) => {
      console.log(res, "第二层的十行处理代码");

      return res + '222';
    }).then((res) => {
      console.log(res, "第三层的十行处理代码");
    }).catch(err => {
      console.log(err);
    });
  </script>
</body>
</html>